package com.easychat.service;

import java.util.List;

import com.easychat.entity.dto.TokenUserInfoDTO;
import com.easychat.entity.dto.UserContactSearchResultDTO;
import com.easychat.entity.enums.UserContactStatusEnum;
import com.easychat.entity.po.UserContactApply;
import com.easychat.entity.query.UserContactQuery;
import com.easychat.entity.po.UserContact;
import com.easychat.entity.vo.PaginationResultVO;


/**
 * 联系人 业务接口
 */
public interface UserContactService {

	/**
	 * 根据条件查询列表
	 */
	List<UserContact> findListByParam(UserContactQuery param);

	/**
	 * 根据条件查询列表
	 */
	Integer findCountByParam(UserContactQuery param);

	/**
	 * 分页查询
	 */
	PaginationResultVO<UserContact> findListByPage(UserContactQuery param);

	/**
	 * 新增
	 */
	Integer add(UserContact bean);

	/**
	 * 批量新增
	 */
	Integer addBatch(List<UserContact> listBean);

	/**
	 * 批量新增/修改
	 */
	Integer addOrUpdateBatch(List<UserContact> listBean);

	/**
	 * 多条件更新
	 */
	Integer updateByParam(UserContact bean,UserContactQuery param);

	/**
	 * 多条件删除
	 */
	Integer deleteByParam(UserContactQuery param);

	/**
	 * 根据UserIdAndContactId查询对象
	 */
	UserContact getUserContactByUserIdAndContactId(String userId,String contactId);


	/**
	 * 根据UserIdAndContactId修改
	 */
	Integer updateUserContactByUserIdAndContactId(UserContact bean,String userId,String contactId);


	/**
	 * 根据UserIdAndContactId删除
	 */
	Integer deleteUserContactByUserIdAndContactId(String userId,String contactId);

	/**
	 * 搜索联系人
	 * @param userId 用户id
	 * @param contactId 联系人id
	 * @return
	 */
    UserContactSearchResultDTO search(String userId, String contactId);

	/**
	 * 申请加好友或者入群申请
	 * @param tokenUserInfoDTO 申请者信息
	 * @param contactId 联系人id
	 * @param applyInfo 申请信息
	 * @return joinType
	 */
	Integer applyAdd(TokenUserInfoDTO tokenUserInfoDTO, String contactId, String applyInfo);

//	/**
//	 * 添加联系人
//	 * @param userContactApply
//	 */
//	void addContact(UserContactApply userContactApply);

	/**
	 * 删除或拉黑联系人
	 * @param userId
	 * @param contactId
	 * @param userContactStatusEnum
	 */
    void removeUserContact(String userId, String contactId, UserContactStatusEnum userContactStatusEnum);

	/**
	 * 添加机器人好友
	 * @param userId 要添加机器人好友的用户id
	 */
	void addContact4Robot(String userId);
}